package com.permissionmanager.controller;

import com.permissionmanager.common.Result;
import com.permissionmanager.entity.Page;
import com.permissionmanager.entity.User;
import com.permissionmanager.service.impl.PermServiceImpl;
import com.permissionmanager.service.impl.UserServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

/**
 * user控制层
 *
 */
@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/user")
public class UserController {
    private final UserServiceImpl userService;
    private final PermServiceImpl permService;

    // 登录（username、password）
    @RequestMapping("/login")
    public Result login(@RequestBody User user){
        log.info("进入登录功能！");
        log.debug("user-->{}",user);
        User dbUser = userService.login(user);
        log.info("登录成功！");
        return Result.success(dbUser);
    }
    // 注册（username、password、phone）
    @RequestMapping("/register")
    public Result register(@RequestBody User user) {
        log.info("进入注册功能！");
        log.debug("user-->{}",user);
        userService.add(user);
        log.info("注册成功！");
        return Result.success();
    }
    // 忘记密码（phone、username、password）
    @RequestMapping("/forgetPwd")
    public Result forgetPwd(@RequestBody User user) {
        log.info("进入忘记密码功能！");
        log.debug("user-->{}",user);
        userService.forgetPwd(user);
        log.info("重置密码成功！");
        return Result.success();
    }

    // 查询（pageNum、pageSize、username、name）
    @GetMapping("/findByPage")
    public Result findByPage(@RequestParam Integer pageNum,
                             @RequestParam Integer pageSize,
                             @RequestParam String username,
                             @RequestParam String name) {
        log.info("进入user分页查询功能！");
        Page<User> page = userService.findPage(pageNum,pageSize,username,name);
        log.info("查询成功！");
        return Result.success(page);
    }

    // 新增（username、password、phone）
    @PostMapping("/add")
    public Result add(@RequestBody User user) {
        log.info("进入user新增功能！");
        log.info("user-->{}",user);

        userService.add(user);
        log.info("新增成功！");
        return Result.success();
    }

    // 修改 （phone、id）
    @PutMapping("/update")
    public Result update(@RequestBody User user) {
        log.info("进入user修改功能！");
        log.info("user-->{}",user);

        userService.update(user);
        log.info("修改成功！");
        return Result.success();
    }

    // 删除（id）
    @DeleteMapping("/del/{id}")
    public Result del(@PathVariable Integer id) {
        log.info("进入user单条删除功能！");
        userService.del(id);
        log.info("删除成功！");
        return Result.success();
    }




}
